\section{Verrous (mutex)}

    Suite à l'implémentation de notre préemption, nous avons ajouté la notion de mutex,
    pour que le premier thread qui prends la main puisse s'exécuter jusqu'au bout sans qu'un
    thread prenne la main avant qu'il est fini.\\
    \\
    Pour cela, on utilise une implémentation de spinlock, permettant de simuler un comportement de mutex
    grâce à des opérations atomique écrites en assembleur. On vérouille donc la boucle d'un million d'
    itérations qui constituera la zone "critique".
    \\
    Exemple de mutex avec 2 threads, le premier thread venant à s'exécuter vérouille la ressource :
    \begin{center}
	\includegraphics[scale=0.5]{pictures/mutex.png}
	\end{center}
	
	La préemption s'occupe toujours de passer la main toutes les secondes, seulement lorsqu'on passe la main
	au thread qui n'a pas la ressource l'attente est active jusqu'au prochain passage de main. C'est un point qui pourrait 
	être améliorer si l'on souhaitait faire de l'attente passive.
	
